//最小深度算法  方法一
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

public class Solution {
    public int minDepth(TreeNode root) {
        // 如果节点为空，深度为0
        if (root == null) {
            return 0;
        }

        // 如果左子树为空，递归右子树
        if (root.left == null) {
            return minDepth(root.right) + 1;
        }

        // 如果右子树为空，递归左子树
        if (root.right == null) {
            return minDepth(root.left) + 1;
        }

        // 左右子树都不为空，递归计算左右子树的深度
        return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
    }
}
